UAC用户帐户控制[User Account Control]

UAC简介

  UAC是微软在Windows Vista之后的版本引入的一种安全机制,通过UAC,应用程序和任务可始终在非管理员账户的安全上下文中运行。UAC 可以阻止未经授权的应用程序自动进行安装,并防止无意中更改系统设置。

  • 如果需要获取管理员权限,通过的路径有以下几种:

    • 进程已经拥有管理员权限控制

    • 进程被用户允许通过管理员权限允许

   ACL(Access ControL List)访问控制列表:Windows中的所有的资源都有ACL,这个列表决定了拥有何种权限的用户/进程能够使用这个资源。

  • UAC启动后

    • 若用户是标准用户,Windows会给用户分配一个标准Access Token。
    • 若用户是管理员,Windows会分配两个访问令牌,一份是管理员访问令牌(Full Access Token),另一份则是标准的用户令牌。
  • 在一般的情况下会以标准的用户权限启动Explorer.exe[资源管理器]进程,若用户同意则赋予完整管理员权限访问令牌进行操作。

UAC触发

* 配置Windows Update

* 增加或删除用户账户

* 改变用户的账户类型

* 改变UAC设置

* 安装ActiveX

* 安装或移除程序

* 安装设备驱动程序

* 设置家长控制

* 将文件移动或复制到Program Files或Windows目录

* 查看其他用户文件夹

  在触发UAC时,系统会创建一个consent.exe进程,该进程用以确定是否创建管理员进程(通过白名单和用户选择判断),然后creatprocess。

image-20210310110839742

  • consent.exe进程,该进程验证被请求的进程签名以及发起者的权限是否符合要求,决定是否弹出UAC框让用户进行确认。UAC框会创建新的安全桌面,屏蔽之前的界面。同时这个UAC框进程是SYSTEM权限进程,其他普通进程也无法和其进行通信交互。

image-20210310110925040

By pass for UAC

  在MSF中主要可以用7个模块来绕过UAC:

image-20210310111017625

  • 这里展示一个模块的绕过:

    image-20210310112615344 image-20210310112658824
    • 模块执行成功后,执行getuid发现还是普通权限,不要失望,继续执行getsystem,再次查看权限,成功绕过UAC,且已经是系统权限了。其他几个模块用法和上面一样,原理有所不同,执行成功后都会返回一个新的meterpreter shell,且都需要执行getsystem获取系统权限。

      image-20210310112933745

      image-20210310112942221

  • Cobalt Strike’s 提权

    ​ CS的bypassUAC似乎好像只有一种绕过的方式,至于绕过的步骤我们之前第二章都已经看到过了,这里我想说MSF你爸爸还是你爸爸,np还是np的。